package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Role;

import java.util.List;
import java.util.Map;

/**
 * 角色管理持久层
 */

public interface RoleDao {
    Role findRoleByUserId(Integer userId);

    /**
     * 角色分页
     * @param queryString
     * @return
     */
    Page<Role> findByCondition(String queryString);

    /**
     * 添加角色
     * @param role
     */
    void add(Role role);

    /**
     * 删除角色
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 设置角色权限
     * @param map
     */
    void setRoleAndPermission(Map<String, Object> map);

    /**
     * 设置角色的菜单
     * @param map
     */
    void setRoleAndMenu(Map<String, Object> map);

    /**
     *
     * @param id
     * @return
     */
    Role findRoleById(Integer id);

    /**
     * 更新角色数据
     * @param role
     */
    void updateRole(Role role);

    /**
     * 删除角色与权限的关系,接除关联关系
     * @param roleId
     */
    void deleteRolePermissionByRoleid(Integer roleId);

    /**
     * 删除角色与菜单的关系,接除关联关系
     * @param roleId
     */
    void deleteRoleMenuByRoleid(Integer roleId);

    /**
     * 查找角色与菜单数据是否有关联
     * @param id
     * @return
     */
    int findRoleMenuById(Integer id);

    /**
     * 查找角色与权限数据是否有关联
     * @param id
     * @return
     */
    int findRoleAuthById(Integer id);

    /**
     * 查找角色与权限数据是否有关联
     * @param id
     * @return
     */
    int findRoleUserById(Integer id);

    /**
     * 查询所有角色
     * @return
     */
    List<Role> findRoleAll();
}
